In displaying images on a display (be it a monitor, television, or some other machine that displays data), that data can be received in different ways. When the data is received non-interlaced, the data is sent pixel by pixel, row by row: every row is sent sequentially for every frame. For example, FIG. 1A shows rows 105, 110, 115, 120, 125, and 130 of an image: in FIG. 1A, the image includes a line. If the data are received non-interlaced, then the data in row 105 is received, followed by row 110, then row 115, and so on. When the entire image has been painted, the data re received again, starting with the first pixel in row 105. In particular, when the data is received as non-interlaced data, pixel 135 is received as part of the data for row 120 for the image every time the display is refreshed.
Sometimes, however, the data are received interlaced. When the data are received interlaced, the rows are received alternately. So row 105 is received first, then row 115, then row 125, and so on. After the first set of rows is received, the second set is received, starting with row 110, then row 120, then row 130, and so on. Once the second set of rows has been completely received, the process starts over with the first set of rows again. For example, FIG. 1B shows the half of the data that are received when the data are transmitted interlaced.
A problem with receiving interlaced data is that the data in the different sets of rows come from different frames. In other words, the data received in the second set of rows often are from a slightly different image than the data received in the first set of rows. If the image is static, this is not a real problem. But if the image is dynamic (that is, the frames are different, such as might be used to show motion), then the images might not appear smooth (given that different rows are updated at different times).
To address this problem, the display can attempt to fill the missing rows not provided in the interpolated data. That is, given rows 105 and 115, the display can attempt to determine values for the pixels in row 110, such as pixel 135. In this manner, the display can try to display frames that appear smooth.
But interpolating the values for the missing rows is not necessarily straightforward. Bear in mind that, in attempting to interpolate pixels in, say, row 120, the display only has the data in rows 105, 115, and 125. A simple approach to pixel value interpolation would involve interpolating based on the pixel directly above and directly below the pixel in question. But if one or both of the values of the pixels immediately above and below the pixel being interpolated are unrelated to the correct value for the pixel being interpolated, the interpolated value for pixel 135 might not be accurate. As shown in FIG. 1A, pixel 135 is part of the line that is three pixels wide, and is dark, as is the pixel immediately above pixel 135. But the pixel immediately below pixel 135, which is not part of this line, is light. Simple interpolation by averaging the values of the pixels above and below the pixel in question would produce an inaccurate value for pixel 135.
A need remains for a way to accurately interpolate a value for a pixel in interlaced data on a display, that addresses these and other problems associated with the prior art.